Virtualization is an abstraction that decouples the physical hardware from the operating system in a data processing system to deliver greater resource utilization and flexibility. Virtualization allows multiple virtual machines with heterogeneous operating systems (e.g., Windows™, Linux™, UNIX™, etc.) and applications to run in isolation, side-by-side on the same physical machine. A virtual machine is the representation of a physical machine by software. A virtual machine has its own set of virtual hardware (e.g., RAM, CPU, NIC, hard disks, etc.) upon which an operating system and applications are loaded. The operating system sees a consistent, normalized set of hardware regardless of the actual physical hardware components.
FIG. 1 is a high level block diagram of a virtualized processing system (e.g., a computer). As shown, the virtualized processing system 100 includes a virtual server 101. A virtual server is virtualization software running on a physical server. The virtual server 101 abstracts physical hardware 102 (e.g., processors, memory, storage and networking resources, etc.) to be provisioned to multiple virtual machines 103.
A guest operating system 105 (e.g., Windows™, Linux™, UNIX™, etc.) is installed on each of the virtual machines 103. The virtual server 101 presents the physical hardware 102 as virtual hardware 104 to the guest operating system 105 and applications 106 running in the guest operating system 105. However, some physical hardware 102 may not be virtualized by the virtual server 101. Thus, the applications 106 will not be able to access the un-virtualized hardware for services. To solve this problem, an Application Programming Interface (API) for the virtual server 101 is provided. Through the API, the applications 106 can obtain information regarding the un-virtualized hardware from the virtual server 101. APIs for virtual servers are vendor specific. Currently, there is not a unified common interface for different types of virtual server. Thus, the source code for the applications 106 needs to be changed to be compatible with APIs of different types of virtual server. Changing the source code for applications incurs more design and implementation effort, and may introduce errors in the application software.